#ifndef GROUPADAPTEROLDVERSION_H_JM_20121117
#define GROUPADAPTEROLDVERSION_H_JM_20121117
/// @file GroupAdapterOldVersion.h _OK_ Adapter pre operacie s groupou 
/// v prvej verzii boboxu nad, ktorou bol vyvijany program (cislo verzie vsak 
/// nie je jedna sa o nejaku vyvojovu medziverziu - starsie ako 2.2).

#include "../BoxBaseTypes.h"
#include "../RootBox.h"
#include "GroupAdapterInterface.h"

namespace jm4bbx {
	/**
	 * Adpter pre v/v groupy pre prvu pouzitu verziu boboxu(cislo verzie je 
	 * nezname jedna sa o nejaku vyvojovu medziverziu). Pokial sa jedna o inu 
	 * verziu boboxu tak tento adapter je abstraktny a nie je ho teda mozne
	 * zostrojit. Preklad je riadeny makrom BOBOX_VERSION_? t.j. v tomto pripade
	 * BOBOX_VERSION_OLD, ktore sa definuje v nastaveniach projektu.
	 **/
	class  GroupAdapterOldVersion : public GroupAdapterInterface {
#ifdef BOBOX_VERSION_OLD
	public:
		/// Typ pouzivany v rozhrani boboxu respektive typ implementacie group 
		/// v boboxe. 
		typedef const RootBox::group groupImpl;
		/// Typ bazoveho boxu v projekte pre pristup k rozhraniu boboxu.
		typedef const RootBox boxImpl;
		
		/**
		 * @param g realna groupa vyuzivana boboxom, ktorej rozhranie sa 
		 * adaptuje
		 * @param box klient pre ktoreho sa rozhranie adaptuje (v novsej verzi 
		 * boboxu poskytuje niektore funkcionality potrebne pre adaptovanie)
		 * @param gType fyzicky index v/v kupiny v modele
		 **/
		GroupAdapterOldVersion(groupImpl* g, boxImpl* box, groupType gType);
		
		virtual size_t getReadBegin() const override;
		virtual size_t getReadEnd() const override;
		virtual size_t getReadPosition() const override; 		
		virtual void moveReadPosition(int val = 1) override;
		virtual void relocate(size_t from, size_t to) override;
		virtual void allocate(size_t size) override;
		virtual void resize(size_t size) override;
		virtual bool isPoisoned() const override;
		virtual size_t getColumnCount() const override;

	private:
		/// Adaptovana bobox groupa.
		groupImpl* group_;
		/// Klientsky box adptovaneho rozhrania.
		boxImpl* box_;
		/// Index adaptovanej groupy v modele vypoctu.
		groupType groupType_;
#endif
	};

} // namespace jm4bbx


#endif
